package com.hlkj.pay.infrastructure.model.merchant;

import com.baomidou.mybatisplus.annotation.TableName;
import com.hlkj.framework.mybatis.core.dataobject.BaseDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;

/**
* 商户信息表
* @TableName t_merchant_info
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("t_merchant_info")
public class MerchantInfoDO extends BaseDO {

    /**
    * 是否禁用：0-否；1-是；
    */
    @Schema(description = "是否禁用：0-否；1-是；")
    private Integer status;
    /**
    * 商户类型，1=个人，2=企业
    */
    @Schema(description = "商户类型，1=个人，2=企业")
    private Integer type;
    /**
     * 商户类型，0=普通商户，1=平台商户
     */
    @Schema(description = "商户类型，0=普通商户，1=平台商户")
    private Integer merType;
    /**
    * 商户名称或者企业全称
    */
    @Size(max= 64,message="编码长度不能超过64")
    @Schema(description = "商户名称或者企业全称")
    private String name;
    /**
    * 营业执照号码
    */
    @Size(max= 64,message="编码长度不能超过64")
    @Schema(description = "营业执照号码")
    private String license;
    /**
    * 商户初始登陆账号
    */
    @Size(max= 64,message="编码长度不能超过64")
    @Schema(description = "商户初始登陆账号")
    private String account;
    /**
    * 商户简称或者企业简称
    */
    @Size(max= 64,message="编码长度不能超过64")
    @Schema(description = "商户简称或者企业简称")
    private String shortName;
    /**
    * 法人姓名
    */
    @Size(max= 64,message="编码长度不能超过64")
    @Schema(description = "法人姓名")
    private String legalName;
    /**
    * 法人身份证号码
    */
    @Size(max= 64,message="编码长度不能超过64")
    @Schema(description = "法人身份证号码")
    private String legalIdNum;
    /**
    * 法人手机号码
    */
    @Size(max= 32,message="编码长度不能超过32")
    @Schema(description = "法人手机号码")
    private String legalPhone;
    /**
    * 法人地址
    */
    @Size(max= 64,message="编码长度不能超过64")
    @Schema(description = "法人地址")
    private String legalAddress;
    /**
    * 分润规则，1=平台手续费分润，2=间联机构分润，3=机构与平台手续费同时分润
    */
    @NotNull(message="[分润规则，1=外扣，2=内扣，3=1+2")
    @Schema(description = "分润规则，1=平台手续费分润，2=间联机构分润，3=机构与平台手续费同时分润")
    private Integer profitSharingRule;
    /**
    * 备注
    */
    @Size(max= 255,message="编码长度不能超过255")
    @Schema(description = "备注")
    private String note;
    /**
    * 营业执照照片
    */
    @Size(max= 255,message="编码长度不能超过255")
    @Schema(description = "营业执照照片")
    private String licensePhoto;
    /**
    * 身份证正面
    */
    @Size(max= 255,message="编码长度不能超过255")
    @Schema(description = "身份证正面")
    private String legalIdCardFront;
    /**
    * 身份证反面
    */
    @Size(max= 255,message="编码长度不能超过255")
    @Schema(description = "身份证反面")
    private String legalIdCardBack;
    /**
    * 商户商户号
    */
    @Size(max= 64,message="编码长度不能超过64")
    @Schema(description = "商户商户号")
    private String sn;
    /**
    * 注册渠道，1=运营平台注册，2=自行注册，3=机构注册
    */
    @Schema(description = "注册渠道，1=运营平台注册，2=自行注册，3=机构注册")
    private Integer registerChannel;
    /**
    * 上级机构
    */
    @Size(max= 64,message="编码长度不能超过64")
    @Schema(description = "上级机构")
    private String superAgent;
    /**
    * 余额是否拦截，1拦截，0不拦截
    */
    @Schema(description = "余额是否拦截，1拦截，0不拦截")
    private Integer blockBal;
    /**
    * 商户状态，1=待补充资料，2=待审核，3=待签约，4=签约中，5=签约成功，0=审核驳回
    */
    @Schema(description = "商户状态，1=待补充资料，2=待审核，3=待签约，4=签约中，5=签约成功，0=审核驳回")
    private Integer signStatus;
    /**
    * 签约流程ID
    */
    @Size(max= 64,message="编码长度不能超过64")
    @Schema(description = "签约流程ID")
    private String signFlowId;
    /**
    * 拒签理由
    */
    @Size(max= 255,message="编码长度不能超过255")
    @Schema(description = "拒签理由")
    private String message;
    /**
    * 交易是否关闭，0=关闭，1=开启
    */
    @Schema(description = "交易是否关闭，0=关闭，1=开启")
    private Integer apiStatus;
    /**
    * 技术服务费
    */
    @Schema(description = "技术服务费")
    private BigDecimal tsFee;
    /**
    * 平台手续费费率底价
    */
    @Schema(description = "平台手续费费率底价")
    private BigDecimal commRateBase;
    /**
    * 场景信息串
    */
    @Schema(description = "场景信息串")
    private String scene;
    /**
    * 商户类别 1 商户 2 代理商户
    */
    @Schema(description = "商户类别 1 商户 2 代理商户")
    private Integer snType;
    /**
     * 交易密码
     */
    @Schema(description = "交易密码")
    private String tranPwdEncrypt;

    @Schema(description = "运营人员")
    private Integer operateId;
}
